1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package com.google.common.collect;
16
17 import com.google.common.annotations.GwtIncompatible;
18
19 import junit.framework.TestCase;
20
21 import java.util.Iterator;
22 import java.util.List;
23 import java.util.NoSuchElementException;
24
25
26
27
28
29
30 @GwtIncompatible("TreeRangeSet")
31 public abstract class AbstractRangeSetTest extends TestCase {
32 public static void testInvariants(RangeSet<?> rangeSet) {
33 testInvariantsInternal(rangeSet);
34 testInvariantsInternal(rangeSet.complement());
35 }
36
37 private static <C extends Comparable> void testInvariantsInternal(RangeSet<C> rangeSet) {
38 assertEquals(rangeSet.asRanges().isEmpty(), rangeSet.isEmpty());
39 assertEquals(!rangeSet.asRanges().iterator().hasNext(), rangeSet.isEmpty());
40
41 List<Range<C>> asRanges = ImmutableList.copyOf(rangeSet.asRanges());
42
43
44 for (int i = 0; i + 1 < asRanges.size(); i++) {
45 Range<C> range1 = asRanges.get(i);
46 Range<C> range2 = asRanges.get(i + 1);
47 assertFalse(range1.isConnected(range2));
48 }
49
50
51 for (Range<C> range : asRanges) {
52 assertFalse(range.isEmpty());
53 }
54
55 Iterator<Range<C>> itr = rangeSet.asRanges().iterator();
56 Range<C> expectedSpan = null;
57 if (itr.hasNext()) {
58 expectedSpan = itr.next();
59 while (itr.hasNext()) {
60 expectedSpan = expectedSpan.span(itr.next());
61 }
62 }
63
64 try {
65 Range<C> span = rangeSet.span();
66 assertEquals(expectedSpan, span);
67 } catch (NoSuchElementException e) {
68 assertNull(expectedSpan);
69 }
70 }
71 }